package com.ybu;

import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamDemo {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("张一");
        names.add("张二");
        names.add("张三");
        names.add("张四");
        names.add("张五");
        names.add("赵六");
        List<String> list1 = new ArrayList<>();
        names.forEach(name->{
            if(name.startsWith("张")){
                list1.add(name);
            }
        });

        //使用stream流
        //1.获取stream流 2.过滤 3.遍历
        names.stream()
                .filter(name->name.startsWith("张"))
                .filter(name->name.length()==3)
                .forEach(System.out::println);

    }
    @Test
    public void test1(){
        List<Integer>list  = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);
        list.add(10);


        List<Integer> list1 = list.stream()
                .filter(integer->integer%2==0)
                .collect(Collectors.toList());
        System.out.println(list1);
    }
    @Test
    public void test2(){
        List<String>list = new ArrayList<>();
        list.add("张一,23");
        list.add("张二,24");
        list.add("张三,25");
        list.add("张四,26");

        Map<Object, Object> map  = list.stream().filter(s -> {
            String[] split = s.split(",");
            int  age = Integer.parseInt(split[1]);
            return age>=24;
        }).collect(Collectors.toMap(s -> {
            String[] split = s.split(",");
            return split[0];
        },s -> {
            String[] split = s.split(",");
            return split[1];
        }));
        map.forEach((k,v)->{
            System.out.println(k+"--"+v);
        });

    }
    @Test
    public static void test3(){
        List<String>list1  = new ArrayList<>();
        list1.add("吴蔚");
        list1.add("李四百");
        list1.add("张三的");
        list1.add("王五");
        list1.add("赵六");


        List<String> list2 = new ArrayList<>();
        //女演员
        list2.add("杨幂");
        list2.add("高圆圆");
        list2.add("杨紫");
        list2.add("迪丽热巴");
        list2.add("关晓彤");
        list2.add("赵丽颖");


        Stream<String> stream1 = list1.stream().filter(s -> {
            return s.length()>=3;
        }).limit(2);
        Stream<String> stream2 = list2.stream().filter(s -> {
            return s.startsWith("杨");
        }).skip(1);
        Stream.concat(stream1,stream2).forEach(System.out::println);
    }
}
